#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<stdbool.h>
#include "data_structure.h"

void clear_input_buffer2();


////用户结构
//typedef struct User {
//	/*long long id; */                //uid
//	char id_nicknames[50];        //昵称
//	char phone[50];               //电话号码
//	char secret_code[50];         //密码
//	char name[50];                //真实姓名
//	char id_name[50];             //身份证号码
//
//}User;
//
//
//
////用户节点
//typedef struct User_node {
//	User user;                        //节点
//	struct User_node* next;           //指向下一个节点的指针
//}User_node;
//
//
////用户链表
//typedef struct User_list {
//	User_node* head;
//	int size;
//}User_list;


//创建节点
User_node* create_node();


//链表初始化
void init_list(User_list* user_list);



//将节点加入到链表当中
void append_list(User_list* user_list, User_node* user_node);


//打印当前链表
void printf_user(User_list user_list);


//清空当前链表
void free_list(User_list* user_list);


//按值查找
User_node* find_phone_data(User_list user_list, char phone[]);
//按电话号找用户
User* find_user_by_phone(User_list* user_list, char* phone);

//注册
void resigter_st(User_list* user_list);

//保存注册信息
void save_uers_data(User_list* user_list);

//保存更改之后的用户信息
void save_change_uers_data(User_list* user_list);

//读取注册信息
void read_user_data(User_list* user_list);

//判断用户登录
bool judge_user_data(User_list user_list, User_node** cur_user_node);

//修改用户信息
void change_info(User_node* user_node, User_list user_list);

//用户选择的菜单信息
int menu_personal_info();

/**
	查询用户功能
	1 查询用户信息 （昵称 模糊）
	2 查询用户信息 （电话）
	3 查询用户信息 （身份证号）
	4 查询用户信息 （真实姓名）
**/

// 打印用户信息
void print_user(User_node* user_node);
// 查询用户信息 （昵称 模糊）
void search_user_by_nickname(System sys);
// 查询用户信息 （电话）
void search_user_by_phone(System sys);
// 查询用户信息 （身份证号）
void search_user_by_id_num(System sys);
// 查询用户信息 （真实姓名）模糊
void search_user_by_name(System sys);

//排序功能
// 查看用户 Order by 姓名
void sort_user_order_by_name(User_list* list);
// 查看用户 Order by phone
void sort_user_order_by_phone(User_list* list);